<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  
  <link rel="shortcut icon" href="../img/favicon.ico">
  <title>贡献 - Keras 中文文档</title>
  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>

  <link rel="stylesheet" href="../css/theme.css" type="text/css" />
  <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
  <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css">
  
  <script>
    // Current page data
    var mkdocs_page_name = "\u8d21\u732e";
    var mkdocs_page_input_path = "contributing.md";
    var mkdocs_page_url = "/zh/contributing/";
  </script>
  
  <script src="../js/jquery-2.1.1.min.js" defer></script>
  <script src="../js/modernizr-2.8.3.min.js" defer></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
  <script>hljs.initHighlightingOnLoad();</script> 
  
  <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-61785484-1', 'keras.io');
      ga('send', 'pageview');
  </script>
  
</head>

<body class="wy-body-for-nav" role="document">

  <div class="wy-grid-for-nav">

    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
      <div class="wy-side-nav-search">
        <a href=".." class="icon icon-home"> Keras 中文文档</a>
        <div role="search">
  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" title="Type search term here" />
  </form>
</div>
      </div>

      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
	<ul class="current">
	  
          
            <li class="toctree-l1">
		
    <a class="" href="..">主页</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../why-use-keras/">为什么选择 Keras?</a>
	    </li>
          
            <li class="toctree-l1">
		
    <span class="caption-text">快速开始</span>
    <ul class="subnav">
                <li class="">
                    
    <a class="" href="../getting-started/sequential-model-guide/">Sequential 顺序模型指引</a>
                </li>
                <li class="">
                    
    <a class="" href="../getting-started/functional-api-guide/">函数式 API 指引</a>
                </li>
                <li class="">
                    
    <a class="" href="../getting-started/faq/">FAQ 常见问题解答</a>
                </li>
    </ul>
	    </li>
          
            <li class="toctree-l1">
		
    <span class="caption-text">模型</span>
    <ul class="subnav">
                <li class="">
                    
    <a class="" href="../models/about-keras-models/">关于 Keras 模型</a>
                </li>
                <li class="">
                    
    <a class="" href="../models/sequential/">Sequential 顺序模型 API</a>
                </li>
                <li class="">
                    
    <a class="" href="../models/model/">函数式 API</a>
                </li>
    </ul>
	    </li>
          
            <li class="toctree-l1">
		
    <span class="caption-text">Layers</span>
    <ul class="subnav">
                <li class="">
                    
    <a class="" href="../layers/about-keras-layers/">关于 Keras 网络层</a>
                </li>
                <li class="">
                    
    <a class="" href="../layers/core/">核心网络层</a>
                </li>
                <li class="">
                    
    <a class="" href="../layers/convolutional/">卷积层 Convolutional</a>
                </li>
                <li class="">
                    
    <a class="" href="../layers/pooling/">池化层 Pooling</a>
                </li>
                <li class="">
                    
    <a class="" href="../layers/local/">局部连接层 Locally-connected</a>
                </li>
                <li class="">
                    
    <a class="" href="../layers/recurrent/">循环层 Recurrent</a>
                </li>
                <li class="">
                    
    <a class="" href="../layers/embeddings/">嵌入层 Embedding</a>
                </li>
                <li class="">
                    
    <a class="" href="../layers/merge/">融合层 Merge</a>
                </li>
                <li class="">
                    
    <a class="" href="../layers/advanced-activations/">高级激活层 Advanced Activations</a>
                </li>
                <li class="">
                    
    <a class="" href="../layers/normalization/">标准化层 Normalization</a>
                </li>
                <li class="">
                    
    <a class="" href="../layers/noise/">噪声层 Noise</a>
                </li>
                <li class="">
                    
    <a class="" href="../layers/wrappers/">层封装器 wrappers</a>
                </li>
                <li class="">
                    
    <a class="" href="../layers/writing-your-own-keras-layers/">编写你自己的层</a>
                </li>
    </ul>
	    </li>
          
            <li class="toctree-l1">
		
    <span class="caption-text">数据预处理</span>
    <ul class="subnav">
                <li class="">
                    
    <a class="" href="../preprocessing/sequence/">序列预处理</a>
                </li>
                <li class="">
                    
    <a class="" href="../preprocessing/text/">文本预处理</a>
                </li>
                <li class="">
                    
    <a class="" href="../preprocessing/image/">图像预处理</a>
                </li>
    </ul>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../losses/">损失函数 Losses</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../metrics/">评估标准 Metrics</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../optimizers/">优化器 Optimizers</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../activations/">激活函数 Activations</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../callbacks/">回调函数 Callbacks</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../datasets/">常用数据集 Datasets</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../applications/">应用 Applications</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../backend/">后端 Backend</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../initializers/">初始化 Initializers</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../regularizers/">正则化 Regularizers</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../constraints/">约束 Constraints</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../visualization/">可视化 Visualization</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../scikit-learn-api/">Scikit-learn API</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../utils/">工具</a>
	    </li>
          
            <li class="toctree-l1 current">
		
    <a class="current" href="./">贡献</a>
    <ul class="subnav">
            
    <li class="toctree-l2"><a href="#github-issues-pull-requests">关于 Github Issues 和 Pull Requests</a></li>
    
        <ul>
        
            <li><a class="toctree-l3" href="#_1">漏洞报告</a></li>
        
            <li><a class="toctree-l3" href="#_2">请求新功能</a></li>
        
            <li><a class="toctree-l3" href="#_3">请求贡献代码</a></li>
        
            <li><a class="toctree-l3" href="#pull-requests">Pull Requests 合并请求</a></li>
        
            <li><a class="toctree-l3" href="#_4">添加新的样例</a></li>
        
        </ul>
    

    </ul>
	    </li>
          
            <li class="toctree-l1">
		
    <span class="caption-text">经典样例</span>
    <ul class="subnav">
                <li class="">
                    
    <a class="" href="../examples/addition_rnn/">Addition RNN</a>
                </li>
                <li class="">
                    
    <a class="" href="../examples/babi_rnn/">Baby RNN</a>
                </li>
                <li class="">
                    
    <a class="" href="../examples/babi_memnn/">Baby MemNN</a>
                </li>
                <li class="">
                    
    <a class="" href="../examples/cifar10_cnn/">CIFAR-10 CNN</a>
                </li>
                <li class="">
                    
    <a class="" href="../examples/cifar10_cnn_capsule/">CIFAR-10 CNN-Capsule</a>
                </li>
                <li class="">
                    
    <a class="" href="../examples/cifar10_cnn_tfaugment2d/">CIFAR-10 CNN with augmentation (TF)</a>
                </li>
                <li class="">
                    
    <a class="" href="../examples/cifar10_resnet/">CIFAR-10 ResNet</a>
                </li>
                <li class="">
                    
    <a class="" href="../examples/conv_filter_visualization/">Convolution filter visualization</a>
                </li>
                <li class="">
                    
    <a class="" href="../examples/image_ocr/">Image OCR</a>
                </li>
                <li class="">
                    
    <a class="" href="../examples/imdb_bidirectional_lstm/">Bidirectional LSTM</a>
                </li>
    </ul>
	    </li>
          
        </ul>
      </div>
      &nbsp;
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
        <a href="..">Keras 中文文档</a>
      </nav>

      
      <div class="wy-nav-content">
        <div class="rst-content">
          <div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="..">Docs</a> &raquo;</li>
    
      
    
    <li>贡献</li>
    <li class="wy-breadcrumbs-aside">
      
        <a href="https://github.com/keras-team/keras-docs-zh/edit/master/docs/contributing.md"
          class="icon icon-github"> Edit on GitHub</a>
      
    </li>
  </ul>
  <hr/>
</div>
          <div role="main">
            <div class="section">
              
                <h1 id="github-issues-pull-requests">关于 Github Issues 和 Pull Requests</h1>
<p>找到一个漏洞？有一个新的功能建议？想要对代码库做出贡献？请务必先阅读这些。</p>
<h2 id="_1">漏洞报告</h2>
<p>你的代码不起作用，你确定问题在于Keras？请按照以下步骤报告错误。</p>
<ol>
<li>
<p>你的漏洞可能已经被修复了。确保更新到目前的Keras master分支，以及最新的 Theano/TensorFlow/CNTK master 分支。
轻松更新 Theano 的方法：<code>pip install git+git://github.com/Theano/Theano.git --upgrade</code></p>
</li>
<li>
<p>搜索相似问题。 确保在搜索已经解决的 Issue 时删除 <code>is:open</code> 标签。有可能已经有人遇到了这个漏洞。同时记得检查 Keras <a href="/faq/">FAQ</a>。仍然有问题？在 Github 上开一个 Issue，让我们知道。</p>
</li>
<li>
<p>确保你向我们提供了有关你的配置的有用信息：什么操作系统？什么 Keras 后端？你是否在 GPU 上运行，Cuda 和 cuDNN 的版本是多少？GPU型号是什么？</p>
</li>
<li>
<p>为我们提供一个脚本来重现这个问题。该脚本应该可以按原样运行，并且不应该要求下载外部数据（如果需要在某些测试数据上运行模型，请使用随机生成的数据）。我们建议你使用 Github Gists 来张贴你的代码。任何无法重现的问题都会被关闭。</p>
</li>
<li>
<p>如果可能的话，自己动手修复这个漏洞 - 如果可以的话！</p>
</li>
</ol>
<p>你提供的信息越多，我们就越容易验证存在错误，并且我们可以采取更快的行动。如果你想快速解决你的问题，尊许上述步骤操作是至关重要的。</p>
<hr />
<h2 id="_2">请求新功能</h2>
<p>你也可以使用 Github Issue 来请求你希望在 Keras 中看到的功能，或者在 Keras API 中的更改。</p>
<ol>
<li>
<p>提供你想要的功能的清晰和详细的解释，以及为什么添加它很重要。请记住，我们需要的功能是对于大多数用户而言的，不仅仅是一小部分人。如果你只是针对少数用户，请考虑为 Keras 编写附加库。对 Keras 来说，避免臃肿的 API 和代码库是至关重要的。</p>
</li>
<li>
<p>提供代码片段，演示您所需的 API 并说明您的功能的用例。 当然，在这一点上你不需要写任何真正的代码！</p>
</li>
<li>
<p>讨论完该功能后，您可以选择尝试提一个 Pull Request。如果你完全可以，开始写一些代码。相比时间上，我们总是有更多的工作要做。如果你可以写一些代码，那么这将加速这个过程。</p>
</li>
</ol>
<hr />
<h2 id="_3">请求贡献代码</h2>
<p>在<a href="https://github.com/keras-team/keras/projects/1">这个板块</a> 我们会列出当前需要添加的出色的问题和新功能。如果你想要为 Keras 做贡献，这就是可以开始的地方。</p>
<hr />
<h2 id="pull-requests">Pull Requests 合并请求</h2>
<p><strong>我应该在哪里提交我的合并请求？</strong></p>
<ol>
<li>
<p><strong>Keras 改进与漏洞修复</strong>， 请到 <a href="https://github.com/keras-team/keras/tree/master">Keras <code>master</code> 分支</a>。</p>
</li>
<li>
<p><strong>测试新功能</strong>, 例如网络层和数据集，请到 <a href="https://github.com/farizrahman4u/keras-contrib">keras-contrib</a>。除非它是一个在 <a href="https://github.com/keras-team/keras/projects/1">Requests for Contributions</a> 中列出的新功能，它属于 Keras 的核心部分。如果你觉得你的功能属于 Keras 核心，你可以提交一个设计文档，来解释你的功能，并争取它（请看以下解释）。</p>
</li>
</ol>
<p>请注意任何有关 <strong>代码风格</strong>（而不是修复修复，改进文档或添加新功能）的 PR 都会被拒绝。</p>
<p>以下是提交你的改进的快速指南：</p>
<ol>
<li>
<p>如果你的 PR 介绍了功能的改变，确保你从撰写设计文档并将其发给 Keras 邮件列表开始，以讨论是否应该修改，以及如何处理。这将拯救你于 PR 关闭。当然，如果你的 PR 只是一个简单的漏洞修复，那就不需要这样做。撰写与提交设计文档的过程如下所示：</p>
<ul>
<li>从这个 <a href="https://docs.google.com/document/d/1ZXNfce77LDW9tFAj6U5ctaJmI5mT7CQXOFMEAZo-mAA/edit#">Google 文档模版</a> 开始，将它复制为一个新的 Google 文档。</li>
<li>填写内容。注意你需要插入代码样例。要插入代码，请使用 Google 文档插件，例如 [CodePretty]  (https://chrome.google.com/webstore/detail/code-pretty/igjbncgfgnfpbnifnnlcmjfbnidkndnh?hl=en) (有许多可用的插件)。</li>
<li>将共享设置为 「每个有链接的人都可以发表评论」。</li>
<li>将文档发给 <code>keras-users@googlegroups.com</code>，主题从 <code>[API DESIGN REVIEW]</code> (全大写) 开始，这样我们才会注意到它。</li>
<li>等待评论，回复评论。必要时修改提案。
      - 该提案最终将被批准或拒绝。一旦获得批准，您可以发出合并请求或要求他人撰写合并请求。</li>
</ul>
</li>
<li>
<p>撰写代码（或者让别人写）。这是最难的一部分。</p>
</li>
<li>
<p>确保你引入的任何新功能或类都有适当的文档。确保你触摸的任何代码仍具有最新的文档。<strong>应该严格遵循 Docstring 风格</strong>。尤其是，它们应该在 MarkDown 中格式化，并且应该有 <code>Arguments</code>，<code>Returns</code>，<code>Raises</code> 部分（如果适用）。查看代码示例中的其他文档以做参考。</p>
</li>
<li>
<p>撰写测试。你的代码应该有完整的单元测试覆盖。如果你想看到你的 PR 迅速合并，这是至关重要的。 </p>
</li>
<li>
<p>在本地运行测试套件。这很简单：在 Keras 目录下，直接运行： <code>py.test tests/</code>。</p>
<ul>
<li>您还需要安装测试包： <code>pip install -e .[tests]</code>。</li>
</ul>
</li>
<li>
<p>确保通过所有测试：</p>
<ul>
<li>使用 Theano 后端，Python 2.7 和 Python 3.5。确保你有 Theano 的开发版本。</li>
<li>使用 TensorFlow 后端，Python 2.7 和 Python 3.5。确保你有 TensorFlow 的开发版本。</li>
<li>使用 CNTK 后端， Python 2.7 和 Python 3.5。确保你有 CNTK 的开发版本。</li>
</ul>
</li>
<li>
<p>我们使用 PEP8 语法约定，但是当涉及到行长时，我们不是教条式的。尽管如此，确保你的行保持合理的大小。为了让您的生活更轻松，我们推荐使用 PEP8 linter：</p>
<ul>
<li>安装 PEP8 包：<code>pip install pep8 pytest-pep8 autopep8</code></li>
<li>运行独立的 PEP8 检查： <code>py.test --pep8 -m pep8</code></li>
<li>你可以通过运行这个命令自动修复一些 PEP8 错误： <code>autopep8 -i --select &lt;errors&gt; &lt;FILENAME&gt;</code>。
例如： <code>autopep8 -i --select E128 tests/keras/backend/test_backends.py</code></li>
</ul>
</li>
<li>
<p>提交时，请使用适当的描述性提交消息。</p>
</li>
<li>
<p>更新文档。如果引入新功能，请确保包含演示新功能用法的代码片段。</p>
</li>
<li>
<p>提交你的 PR。如果你的更改已在之前的讨论中获得批准，并且你有完整（并通过）的单元测试以及正确的 docstring/文档，则你的 PR 可能会立即合并。</p>
</li>
</ol>
<hr />
<h2 id="_4">添加新的样例</h2>
<p>即使你不贡献 Keras 源代码，如果你有一个简洁而强大的 Keras 应用，请考虑将它添加到我们的样例集合中。<a href="https://github.com/keras-team/keras/tree/master/examples">现有的例子</a>展示惯用的 Keras 代码：确保保持自己的脚本具有相同的风格。</p>
              
            </div>
          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="../examples/addition_rnn/" class="btn btn-neutral float-right" title="Addition RNN">Next <span class="icon icon-circle-arrow-right"></span></a>
      
      
        <a href="../utils/" class="btn btn-neutral" title="工具"><span class="icon icon-circle-arrow-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <!-- Copyright etc -->
    
  </div>

  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
      
        </div>
      </div>

    </section>

  </div>

  <div class="rst-versions" role="note" style="cursor: pointer">
    <span class="rst-current-version" data-toggle="rst-current-version">
      
          <a href="https://github.com/keras-team/keras-docs-zh/" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
      
      
        <span><a href="../utils/" style="color: #fcfcfc;">&laquo; Previous</a></span>
      
      
        <span style="margin-left: 15px"><a href="../examples/addition_rnn/" style="color: #fcfcfc">Next &raquo;</a></span>
      
    </span>
</div>
    <script>var base_url = '..';</script>
    <script src="../js/theme.js" defer></script>
      <script src="../search/main.js" defer></script>

</body>
</html>
